package com.itbaizhan.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 拦截器类  启动是访问控制器   Interceptor:拦截器
//拦截器只能拦截controller(控制器) 不可拦截jsp等
public class MyInterceptor2 implements HandlerInterceptor {
    //请求到达controller前执行  返回值为true通过拦截器，返回值为false被拦截器拦截
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("拦截器2：请求到达controller前");
        return true;
    }
    //跳转到JSP页面前执行，此时可以向request域添加数据
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("拦截器2：跳转到JSP前");

    }
    //跳转到JSP页面后执行，此时不可以向request域添加数据
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("拦截器2：跳转到JSP后");

    }
}
/*创建拦截器类，该类实现HandlerInterceptor接口，需要重写三个方法：

preHandle：请求到达Controller前执行的方法，返回值为true通过拦截器，返回值为false被拦截器拦截。
postHandle：跳转到JSP前执行的方法
afterCompletion：跳转到JSP后执行的方法*/

/*
在SpringMVC核心配置文件中配置拦截器

<!-- 配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<!-- 配置拦截器的作用路径-->
<mvc:mapping path="/**"/>
<!-- 拦截器对象 -->
<bean class="com.itbaizhan.interceptor.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>*/

/*全局拦截器可以拦截所有控制器处理的URL，作用等于/**，配置方式如下：

<!-- 配置拦截器 -->
<mvc:interceptors>
  <!-- 全局拦截器 -->
  <bean class="com.itbaizhan.interceptor.MyInterceptor">
  </bean>
</mvc:interceptors>*/